from django import http

from django.views import View
from django_redis import cache

from areas.models import Area


class ProvinceView(View):

   def get(self,request):

      try:
          # 查询省级数据  类.objects.filter---对应表格对象
          province_model_list = Area.objects.filter(parent=None)

          province_list = []

          for province_model in province_model_list:

              province_list.append({'id':province_model.id,
                                    'name':province_model.name})
          #cache.set('province_list',province_list,3600)


      except Exception as e:
          # 如果报错, 则返回错误原因:
          return http.JsonResponse({'code': 400,
                                    'errmsg': '省份数据错误'})

      # 3.返回整理好的省级数据
      return http.JsonResponse({'code': 0,
                                'errmsg': 'OK',
                                'province_list': province_list})




class SubAreasView(View):
    """子级地区：市和区县"""

    def get(self, request, pk):
        # 判断是否有缓存
        #sub_data = cache.get('sub_area_' + pk)

        #if not sub_data:
        try:
                 # 1.查询市或区数据
            sub_model_list = Area.objects.filter(parent=pk)
                 #  查询省份数据
            parent_model = Area.objects.get(id=pk)

            # 2.整理市或区数据
            sub_list = []
            for sub_model in sub_model_list:
                sub_list.append({'id': sub_model.id,
                                     'name': sub_model.name})
                #cache.set('sub_list',sub_list,3600)

            sub_data = {
                    'id': parent_model.id,  # pk
                    'name': parent_model.name,
                    'subs': sub_list
                }

        except Exception as e:
            return http.JsonResponse({'code': 400,
                                        'errmsg': '城市或区县数据错误'})

        # 3.响应市或区数据 ok: 0
        return http.JsonResponse({'code': 0,
                                  'errmsg': 'OK',
                                  'sub_data': sub_data})



